package chapter6

import (
	"fmt"
	"sync"
)

type data struct {
	sync.Mutex
	buf [1024]byte
}

//两个结构体之间方法可能会出现同名问题，这种情况叫做同名遮蔽，可以实现类似覆盖的操作
type user struct {}

type manager struct {
	user
}

func (user)toString()string  {
	return "user"
}
func (m manager)toString()string{
	return m.user.toString()+"manager"
}

func Test2()  {
	d:=data{}
	d.Lock()//编译器会处理为sync.(*Mutex).Lock()
	defer d.Unlock()
	var m manager

	fmt.Println(m.toString())
	fmt.Println(m.user.toString())//尽管能直接访问匿名字段的成员和方法，但它们依然不属于继承关系

}

